const express = require('express');
const router = express.Router();

const ProductType = require('../../../models/product_type');
const ShopCartType = require('../../../models/shopCart');
const menuType = require('../../../models/menu');

/**
 * 注册 - 接口，先查找数据库中是否有用户名，若查找结果为 []，则表明没有，就存储用户数据
 */
router.post('/regist', (req, res) => {
  ProductType.find({ userName: req.body.userName }).exec(function(err,data){
    if(!err){
      if (data.length != 0) {
        res.json({status: 'N', msg: '用户名已存在', info: '用户名已存在'});
      } else {
        let model = new ProductType(req.body);
        model.save()
          .then(rev => {
            res.json({
              status: 'Y',
              msg: '注册成功',
              info: '注册成功'
            })
          })
          .catch(err => {
            res.json({
              status: 'N',
              msg: '注册失败',
              info: err,
            });
          })
      }
    } else {
      console.log(err);
    }
  })
});

/**
 * 订单提交接口，将购物车中的信息提交到订单表中，并清空购物车中的信息
 */
router.post('/menuR', (req, res) => {
  console.log('订单提交接口正常')
  let model = new menuType(req.body);
  model.save()
    .then( rev => {
      console.log('提交成功')
      res.json({
        status: 'Y',
        msg: '订单提交成功',
        info: '订单提交成功'
      })
      ShopCartType.find({ userName: req.body.userName}).exec(function(err, data) {
        for(var j=0;j<data.length;j++) {
          ShopCartType.findByIdAndRemove(data[j]._id, function(err, data) {
            console.log('删除成功')
          })
        }
      })
    })
    .catch( err => {
      console.log(err);
    })
})

/**
 * 在订单列表中找到该用户的订单信息
 */
router.post('/getMyList', (req, res) => {
  menuType.find({ userName: req.body.userName }).exec(function(err, data) {
    if(!err) {
      console.log('dddddddddddddddddddd')
      res.json({
        status: 'Y',
        msg: '获取数据成功',
        info: data,
      })
    }
  })
})

/**
 * 登陆 - 接口 先根据用户名查找数据，若结果为 []，则用户不存在，找到再比较密码
 */
router.post('/login', (req, res) => {
  ProductType.find({ userName: req.body.userName }).exec(function(err, data) {
    if(!err) {
      if (data.length != 0) {
        if (data[0].password == req.body.password) {
          res.json({status: 'Y', msg: '登陆成功', info: data});
        } else {
          res.json({status: 'N', msg: '密码错误', info: '密码错误'});
        }
      } else {
        res.json({status: 'N', msg: '用户不存在', info: '用户不存在'});  
      }
    } else {
      res.json({status: 'N', msg: err, info: err});
    }
  })
})

/**
 * 修改密码 - 接口 查找数据，在根据返回数据的id修改密码
 */
router.post('/updataPsd', (req, res) => {
  ProductType.find({ userName: req.body.userName }).exec(function(err, data) {
    if(!err) {
      if (data[0].password == req.body.password) {
        ProductType.findByIdAndUpdate(data[0].id,{ password: req.body.newPassword },function(err) {
          if(!err) {
            res.json({status: 'Y', msg: '密码修改成功，请重新登陆', info: '密码修改成功，请重新登陆'});
          }
        })
      } else {
        res.json({status: 'N', msg: '密码错误', info: '密码错误'});
      }
    } else {
      console.log(err);
    }
  })
})

/**
 * 修改个人信息  查找数据，再根据返回数据的id 修改个人信息
 */
router.post('/updataMy', (req, res) => {
  ProductType.find({ userName: req.body.userName }).exec(function(err, data) {
    if (!err) {
      ProductType.findByIdAndUpdate(data[0].id, req.body, function(err) {
        if(!err) {
          res.json({status: 'Y', msg: '个人信息修改成功', info: '个人信息修改成功'})
        } else {
          console.log(err);
        }
      })
    } else {
      console.log(err);
    }
  }) 
})

/**
 * 登陆后  获取该账号下所有的数据
 */
router.post('/', (req,res) => {
  ProductType.find({userName: req.body.userName }).exec(function(err, data) {
    if(!err) {
      res.json({status: 'Y', msg: '数据获取成功', info: data});
    } else {
      res.json({status: 'N', msg: err, info: err});
    }
  }) 
})

/**
 * 存储购物车中的数据
 */
router.post('/shopCart', (req, res) => {
  ShopCartType.find({ userName: req.body.userName, goodName: req.body.goodName, }).exec(function(err, data) {
    if(!err) {
      if(data.length == 0) {
        let model = new ShopCartType(req.body);
        model.save()
          .then( rev => {
            res.json({status: 'Y', msg: '商品存储成功', info: '商品存储成功'})
          })
          .catch( err => {
            console.log(err);
          })
      } else {
        console.log('数据库中有此项商品，改变其数量');
        var counts;
        if ( req.body.count == -1) {
          counts = data[0].goodBuyCount - 1;
        } else {
          counts = data[0].goodBuyCount + 1;
        }
        ShopCartType.findByIdAndUpdate(data[0].id, { goodBuyCount: counts}, function(err) {
          if(!err) {
            res.json({status: 'Y', msg: '商品添加成功', info: '商品添加成功'});
          }
        })
      }
    } else {
      console.log(err);
    }
  })
})

/**
 * 根据用户名查找商品并返回
 */
router.post('/getALLGoods', (req, res) => {
  var sum = 0;
  var sump = 0;
  ShopCartType.find({ userName: req.body.userName }).exec(function(err, data) {
    if(!err) {
      for(var i=0;i<data.length;i++) {
        sum += data[i].goodBuyCount;
        sump += data[i].goodBuyCount * data[i].goodPrice;
      }
      res.json({status: 'Y', msg: '成功获取商品', info: data, all: sum, allP: sump});
    } else {
      console.log(err);
    }
  })
})

/**
 * 删除购物车中某一个商品
 */
router.post('/removeGood', (req, res) => {
  ShopCartType.findByIdAndRemove(req.body.id,
  function(err, data) {
    if(!err) {
      res.json({status: 'Y', msg: '删除成功', info: '删除成功'})
    } else {
      console.log(err);
    }
  })
})
module.exports = router;